//////////////////////////////////////////////
// TestFunction.h
// 
//////////////////////////////////////////////

/// Defines / Macros -------------------------

#pragma once

/// Forward decl -----------------------------

namespace nkDebug
{
	struct FunctionDescriptor ;
}

/// Includes ---------------------------------

// nkDebug
#include "../Dll/DllDefines.h"

// nkMemory
#include <NilkinsMemory/Containers/StringView.h>

// Standards
#include <functional>

/// Private ----------------------------------
/// Structures -------------------------------

namespace nkDebug
{
	class DLL_NKDEBUG_EXPORT TestFunction final
	{
		public :

			// Constructor, destructor
			TestFunction (nkMemory::StringView name, std::function<void ()> function) noexcept ;
			~TestFunction () ;

			// Getters
			std::function<void ()> getFunction () const ;
			nkMemory::StringView getName () const ;

		private :

			// Attributes
			FunctionDescriptor* _descriptor ;
	} ;
}